package cn.tedu._03mybatis.mapper;

import cn.tedu._03mybatis.pojo.entity.Comment;
import cn.tedu._03mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface CommentMapper {
    /**
     * 1. 插入: insertComment, 在评论表中插入1条数据;
      */
    //@Insert("INSERT INTO comment(content,created,user_id,weibo_id) VALUES (#{content}, #{created}, #{userId}, #{weiboId})")
    int insertComment(Comment comment);

    /**
     * 2. 删除: deleteById, 根据id删除1条评论;
      */
    //@Delete("DELETE FROM comment WHERE id=#{id}")
    int deleteById(int id);

    /**
     * 3. 修改: `updateById` , 根据id修改评论信息;
     */
    //@Update("UPDATE comment SET content=#{content}, created=#{created}, user_id=#{userId}, weibo_id=#{weiboId} WHERE id=#{id}")
    int updateById(Comment comment);

    /**
     * 4. 查询: selectCommentById1，根据评论的id查询评论的内容、用户ID、微博ID
     */
    //@Select("SELECT content,user_id userId,weibo_id weiboId FROM comment WHERE id=#{cid}")
    CommentVO1 selectCommentById1(int cid);

    /**
     * 5. 查询 selectCommentById2，根据微博的id查询评论的内容、用户ID
     */
    //@Select("SELECT content,user_id userId FROM comment WHERE weibo_id=#{wid}")
    List<CommentVO2> selectCommentById2(int wid);

    /**
     * 6.动态删除:根据id删除对应的评论信息
     *   方式1：参数为数组
     */
    int deleteByIds1(Integer[] ids);

    /**
     * 7.动态删除:根据id删除对应的评论信息
     *   方式2：参数为List集合
     */
    int deleteByIds2(List<Integer> ids);

    /**
     * 8.动态修改:根据评论id修改评论信息
     */
    int dynamicUpdate(Comment comment);

    /**
     * 9.统计评论的数量
     */
    int selectCount();

    /**
     * 10.根据微博ID查询该条微博的详细信息:微博ID、微博内容、发布时间、用户昵称
     */
    WeiboVO3 selectWeiboById(int wid);

    /**
     * 11.多表:查询指定微博的所有评论信息
     *    显示：用户昵称、评论内容、评论时间、微博内容
     */
    List<WeiboVO4> selectCommentById(int wid);

    /**
     * 12.ResultMap示例: 单表
     *  根据微博的id查询该条微博的信息，
     *  只显示：微博编号id、内容content、用户编号user_id
     */
    WeiboResultMapVO1 selectResultMap1(int wid);

    /**
     * 13.查询指定用户发布的所有微博信息:用户id、用户昵称、List<Weibo>
     */
    WeiboResultMapVO2 selectResultMap2(int uid);

    /**
     * 14.查询指定微博的所有评论信息:微博id、微博内容、List<Comment>
     */
    WeiboResultMapVO3 selectResultMap3(int wid);
}










